package com.qf.service.impl;

import com.qf.filters.FiltersChain;
import com.qf.service.DataFilterManager;
import com.qianfeng.smsplatform.common.model.Standard_Submit;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.util.StringUtils;

import java.util.Map;
import java.util.Set;

/*
 * @Data: 2021/7/16 17:06
 * */
//@Service
public class DataFilterManagerImplProperties implements DataFilterManager {
//    配置文件赋值  大于   直接赋值
//    @Value("${filterchain.enablefilters}")
    private  String enable="*";// * 或者null  代表所有过滤都要执行  如果启用多个我们以”，“进行分割

    private Map<String, FiltersChain> filtersChainMap;

    @Autowired
    public void setFiltersChainMap(Map<String, FiltersChain> filtersChainMap) {
        this.filtersChainMap = filtersChainMap;
    }

    @Override
    public void dealSms(Standard_Submit standard_submit) {



        if(StringUtils.isEmpty(enable)||"*".equals(enable)){
            Set<Map.Entry<String, FiltersChain>> entries = filtersChainMap.entrySet();


//            遍历每一个策略
            for(Map.Entry<String,FiltersChain> map:entries){
                System.out.println("策略名字是"+map.getValue().toString());
//                获取策略
                FiltersChain filtersChain = map.getValue();
                boolean result = filtersChain.dealSms(standard_submit);
                if(!result){
//                    代表拦截了
                    return;
                }
            }
        }else {
            String[] name = enable.split(",");
            for(String s:name){
                FiltersChain filtersChain = filtersChainMap.get(s);
//                判断过滤器是否存在
                if(filtersChain!=null){
                    boolean result = filtersChain.dealSms(standard_submit);
                    if(!result){
                        //                    代表拦截了
                        return;
                    }
                }
            }
        }
    }
}
